package org.zxyj.manage.dao;

import java.util.List;
import java.util.Map;

import org.zxyj.manage.entity.CoursePaper;
import org.zxyj.manage.entity.CoursePaperCrop;
import org.zxyj.manage.entity.CoursePaperCropTmxx;
import org.zxyj.manage.entity.CoursePaperDetail;
import org.zxyj.manage.entity.Examinee;

public interface ICoursePaperDao {
	/**
	 * 查询问卷明细
	    * @Title: findCoursePaperDetailList
	    * @param @param criteria
	    * @param @return    参数
	    * @return List<CoursePaperDetail>    返回类型
	    * @throws
	 */
	List<CoursePaperDetail> findCoursePaperDetailList(Map<String, Object> criteria);
	Long findCoursePaperDetailCount(Map<String, Object> criteria);
	
	/**
	 * 查询科目答卷下存在重复的考生数据 
	    * @Title: queryRepeatStudentForPaper
	    * @param @param criteria
	    * @param @return    参数
	    * @return List<Map<String,Object>>    返回类型
	    * @throws
	 */
	List<Map<String,Object>> queryRepeatStudentForPaper(Map<String, Object> criteria);
	
	/**
	 * 查询具体答卷信息
	    * @Title: findCoursePaperDetailMapList
	    * @param @param criteria
	    * @param @return    参数
	    * @return List<Map<String, Object>>    返回类型
	    * @throws
	 */
	List<Map<String, Object>> findCoursePaperDetailMapList(Map<String, Object> criteria);
	
	/**
	 * 插入科目答卷裁剪记录
	    * @Title: insertCoursePaperCrop
	    * @param @param entity    参数
	    * @return void    返回类型
	    * @throws
	 */
	void insertCoursePaperCrop(CoursePaperCrop entity);
	
	/**
	 * 更新答卷明细状态
	    * @Title: updatePaperDetailStatus
	    * @param @param entity    参数
	    * @return void    返回类型
	    * @throws
	 */
	void updatePaperDetailStatus(CoursePaperDetail entity);
	
	/**
	 * 新增裁剪区域题目小项分值
	    * @Title: insertCoursePaperCropTmxx
	    * @param @param entity    参数
	    * @return void    返回类型
	    * @throws
	 */
	void insertCoursePaperCropTmxx(CoursePaperCropTmxx entity);
	
	/**
	 * 删除切图题目小项数据
	    * @Title: deletePaperCropTmxx
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
	void deletePaperCropTmxx(Map<String, Object> criteria);
	
	/**
	 * 删除切图数据
	    * @Title: deletePaperCrop
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
	void deletePaperCrop(Map<String, Object> criteria);
	
	/**
	 * 删除答卷记录
	    * @Title: deletePaperDetail
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
	void deletePaperDetail(Map<String, Object> criteria);
	
	/**
	 * 查询所有考生信息
	    * @Title: queryExamineeList
	    * @param @param criteria
	    * @param @return    参数
	    * @return List<Examinee>    返回类型
	    * @throws
	 */
	List<Examinee> queryExamineeList(Map<String, Object> criteria);

	/**
	 * 更新科目答卷信息
	    * @Title: updatePaperDetail
	    * @param @param entity    参数
	    * @return void    返回类型
	    * @throws
	 */
	void updatePaperDetail(CoursePaperDetail entity);
	
	/**
	 * 根据模板清空裁剪得分信息
	    * @Title: updateCropScoreByTempId
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
	void updateCropScoreByTempId(Map<String, Object> criteria);
	/**
	 * 根据模板清空问卷得分信息
	    * @Title: updatePaperDetailByTempId
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
	void updatePaperDetailByTempId(Map<String, Object> criteria);
	
	/**
	 * 清空切图题目小项数据
	    * @Title: clearPaperCropTmxx
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
	void clearPaperCropTmxx(Map<String, Object> criteria);
	
	/**
	 * 清空切图数据
	    * @Title: clearPaperCrop
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
	void clearPaperCrop(Map<String, Object> criteria);
	
	/**
	 * 清空答卷记录
	    * @Title: clearPaperDetail
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
	void clearPaperDetail(Map<String, Object> criteria);
	
	/**
	 * 删除科目问卷
	    * @Title: deleteCoursePaper
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
	void deleteCoursePaper(Map<String, Object> criteria);
	
	/**
	 * 新增科目问卷ZIP
	    * @Title: insertCoursePaper
	    * @param @param entity    参数
	    * @return void    返回类型
	    * @throws
	 */
	void insertCoursePaper(CoursePaper entity);
	
	/**
	 * 新增科目问卷明细
	    * @Title: insertCoursePaperDetail
	    * @param @param entity    参数
	    * @return void    返回类型
	    * @throws
	 */
	void insertCoursePaperDetail(CoursePaperDetail entity);
	
	/**
	 * 删除已有记录之外的重复数据
	    * @Title: deleteCoursePaperForRepeat
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
    void deleteCoursePaperForRepeat(Map<String, Object> criteria);
    
    /**
     * 查询已上传的考生答卷数据
        * @Title: findCoursePaperSurplusStudentList
        * @param @param criteria
        * @param @return    参数
        * @return List<Map<String,Object>>    返回类型
        * @throws
     */
    List<Map<String,Object>> findCoursePaperSurplusStudentList(Map<String, Object> criteria);
	Long findCoursePaperSurplusStudentCount(Map<String, Object> criteria);
    
    /**
     * 查询未上传的考生班级
        * @Title: querySurplusStudentClass
        * @param @param criteria
        * @param @return    参数
        * @return List<Map<String,Object>>    返回类型
        * @throws
     */
    List<Map<String, Object>> querySurplusStudentClass(Map<String, Object> criteria);
    
    /**
     * 查询课程答卷已裁剪数据
        * @Title: findCoursePaperCropList
        * @param @param criteria
        * @param @return    参数
        * @return List<CoursePaperCrop>    返回类型
        * @throws
     */
    List<CoursePaperCrop> findCoursePaperCropList(Map<String, Object> criteria);
    
    /**
     * 更新裁剪小块总分值
        * @Title: updateCropScore
        * @param     参数
        * @return void    返回类型
        * @throws
     */
    void updateCropScore(CoursePaperCrop entity);
}
